Particle Systems
Manual     Reference     Scripting   
Unity Manual > User Guide > Building Scenes > Particle Systems

Particle Systems

Particles are essentially 2D images rendered in 3D space. They are primarily used for effects such as smoke, fire, water droplets, or leaves. A Particle System is made up of three separate Components: Particle Emitter, Particle Animator, and a Particle Renderer. You can use a Particle Emitter and Renderer together if you want static particles. The Particle Animator will move particles in different directions and change colors. You also have access to each individual particle in a particle system via scripting, so you can create your own unique behaviors that way if you choose.

Please view the Particle Scripting Reference here.

The remainder of this page's text is from the Particle Component Reference pages.

Particle Components

Particle Systems

Particle Systems in Unity are used to make clouds of smoke, steam, fire and other atmospheric effects. Particle Systems work by using one or two Textures & drawing them many times, creating a chaotic effect.


A Particle System included in the Standard Assets

A typical Particle System in Unity is an object that contains a Particle Emitter, a Particle Animator and a Particle Renderer. The Particle Emitter generates the particles, the Particle Animator moves them over time, and the Particle Renderer draws them on the screen.

If you want your particles to interact with the world, add a Particle Collider Component to the GameObject.

Ellipsoid Particle Emitter

The Ellipsoid Particle Emitter spawns particles inside a sphere. Use the Ellipsoid property below to scale & stretch the sphere.


The Ellipsoid Particle Emitter Inspector

Properties

EmitIf enabled, the emitter will emit particles.
Min SizeThe minimum size each particle can be at the time when it is spawned.
Max SizeThe maximum size each particle can be at the time when it is spawned.
Min EnergyThe minimum lifetime of each particle, measured in seconds.
Max EnergyThe maximum lifetime of each particle, measured in seconds.
Min EmissionThe minimum number of particles that will be spawned every second.
Max EmissionThe maximum number of particles that will be spawned every second.
World VelocityThe starting speed of particles in world space, along X, Y, and Z.
Local VelocityThe starting speed of particles along X, Y, and Z, measured in the object's orientation.
Rnd VelocityA random speed along X, Y, and Z that is added to the velocity.
Emitter Velocity ScaleThe amount of the emitter's speed that the particles inherit.
Tangent VelocityThe starting speed of particles along X, Y, and Z, across the Emitter's surface.
Simulate In World SpaceIf enabled, the particles don't move when the emitter moves. If false, when you move the emitter, the particles follow it around.
One ShotIf enabled, the particle numbers specified by min & max emission is spawned all at once. If disabled, the particles are generated in a long stream.
EllipsoidScale of the sphere along X, Y, and Z that the particles are spawned inside.
MinEmitterRangeDetermines an empty area in the center of the sphere - use this to make particles appear on the edge of the sphere.

Details

Ellipsoid Particle Emitters (EPEs) are the basic emitter, and are included when you choose to add a Particle System to your scene from Components->Particles->Particle System. You can define the boundaries for the particles to be spawned, and give the particles an initial velocity. From here, use the Particle Animator to manipulate how your particles will change over time to achieve interesting effects.

Particle Emitters work in conjunction with Particle Animators and Particle Renderers to create, manipulate, and display Particle Systems. All three Components must be present on an object before the particles will behave correctly. When particles are being emitted, all different velocities are added together to create the final velocity.

Spawning Properties

Spawning properties like Size, Energy, Emission, and Velocity will give your particle system distinct personality when trying to achieve different effects. Having a small Size could simulate fireflies or stars in the sky. A large Size could simulate dust clouds in a musky old building.

Energy and Emission will control how long your particles remain onscreen and how many particles can appear at any one time. For example, a rocket might have high Emission to simulate density of smoke, and high Energy to simulate the slow dispersion of smoke into the air.

Velocity will control how your particles move. You might want to change your Velocity in scripting to achieve interesting effects, or if you want to simulate a constant effect like wind, set your X and Z Velocity to make your particles blow away.

Simulate in World Space

If this is disabled, the position of each individual particle will always translate relative to the Position of the emitter. When the emitter moves, the particles will move along with it. If you have Simulate in World Space enabled, particles will not be affected by the translation of the emitter. For example, if you have a fireball that is spurting flames that rise, the flames will be spawned and float up in space as the fireball gets further away. If Simulate in World Space is disabled, those same flames will move across the screen along with the fireball.

Emitter Velocity Scale

This property will only apply if Simulate in World Space is enabled.

If this property is set to 1, the particles will inherit the exact translation of the emitter at the time they are spawned. If it is set to 2, the particles will inherit double the emitter's translation when they are spawned. 3 is triple the translation, etc.

One Shot

One Shot emitters will create all particles within the Emission property all at once, and cease to emit particles over time. Here are some examples of different particle system uses with One Shot Enabled or Disabled:

Enabled:

Disabled:

Min Emitter Range

The Min Emitter Range determines the depth within the ellipsoid that particles can be spawned. Setting it to 0 will allow particles to spawn anywhere from the center core of the ellipsoid to the outer-most range. Setting it to 1 will restrict spawn locations to the outer-most range of the ellipsoid.


Min Emitter Range of 0

Min Emitter Range of 1

Hints

Mesh Particle Emitter

The Mesh Particle Emitter emits particles around a mesh. Particles are spawned from the surface of the mesh, which can be necessary when you want to make your particles interact in a complex way with objects.


The Mesh Particle Emitter Inspector

Properties

EmitIf enabled, the emitter will emit particles.
Min SizeThe minimum size each particle can be at the time when it is spawned.
Max SizeThe maximum size each particle can be at the time when it is spawned.
Min EnergyThe minimum lifetime of each particle, measured in seconds.
Max EnergyThe maximum lifetime of each particle, measured in seconds.
Min EmissionThe minimum number of particles that will be spawned every second.
Max EmissionThe maximum number of particles that will be spawned every second.
World VelocityThe starting speed of particles in world space, along X, Y, and Z.
Local VelocityThe starting speed of particles along X, Y, and Z, measured in the object's orientation.
Rnd VelocityA random speed along X, Y, and Z that is added to the velocity.
Emitter Velocity ScaleThe amount of the emitter's speed that the particles inherit.
Tangent VelocityThe starting speed of particles along X, Y, and Z, across the Emitter's surface.
Simulate In World SpaceIf enabled, the particles don't move when the emitter moves. If false, when you move the emitter, the particles follow it around.
One ShotIf enabled, the particle numbers specified by min & max emission is spawned all at once. If disabled, the particles are generated in a long stream.
Interpolate TrianglesIf enabled, particles are spawned all over the mesh's surface. If disabled, particles are only spawned from the mesh's vertrices.
SystematicIf enabled, particles are spawned in the order of the vertices defined in the mesh. Although you seldom have direct control over vertex order in meshes, most 3D modelling applications have a very systematic setup when using primitives. It is important that the mesh contains no faces in order for this to work.
Min Normal VelocityMinimum amount that particles are thrown away from the mesh.
Max Normal VelocityMaximum amount that particles are thrown away from the mesh.

Details

Mesh Particle Emitters (MPEs) are used when you want more precise control over the spawn position & directions than the simpler Ellipsoid Particle Emitter gives you. They can be used for making advanced effects.

MPEs work by emitting particles at the vertices of the attached mesh. Therefore, the areas of your mesh that are more dense with polygons will be more dense with particle emission.

Particle Emitters work in conjunction with Particle Animators and Particle Renderers to create, manipulate, and display Particle Systems. All three Components must be present on an object before the particles will behave correctly. When particles are being emitted, all different velocities are added together to create the final velocity.

Spawning Properties

Spawning properties like Size, Energy, Emission, and Velocity will give your particle system distinct personality when trying to achieve different effects. Having a small Size could simulate fireflies or stars in the sky. A large Size could simulate dust clouds in a musky old building.

Energy and Emission will control how long your particles remain onscreen and how many particles can appear at any one time. For example, a rocket might have high Emission to simulate density of smoke, and high Energy to simulate the slow dispersion of smoke into the air.

Velocity will control how your particles move. You might want to change your Velocity in scripting to achieve interesting effects, or if you want to simulate a constant effect like wind, set your X and Z Velocity to make your particles blow away.

Simulate in World Space

If this is disabled, the position of each individual particle will always translate relative to the Position of the emitter. When the emitter moves, the particles will move along with it. If you have Simulate in World Space enabled, particles will not be affected by the translation of the emitter. For example, if you have a fireball that is spurting flames that rise, the flames will be spawned and float up in space as the fireball gets further away. If Simulate in World Space is disabled, those same flames will move across the screen along with the fireball.

Emitter Velocity Scale

This property will only apply if Simulate in World Space is enabled.

If this property is set to 1, the particles will inherit the exact translation of the emitter at the time they are spawned. If it is set to 2, the particles will inherit double the emitter's translation when they are spawned. 3 is triple the translation, etc.

One Shot

One Shot emitters will create all particles within the Emission property all at once, and cease to emit particles over time. Here are some examples of different particle system uses with One Shot Enabled or Disabled:

Enabled:

Disabled:

Interpolate Triangles

Enabling your emitter to Interpolate Triangles will allow particles to be spawned between the mesh's vertices. This option is off by default, so particles will only be spawned at the vertices.


A sphere with Interpolate Triangles off (the default)

Enabling this option will spawn particles on and in-between vertices, essentially all over the mesh's surface (seen below).


A sphere with Interpolate Triangles on

It bears repeating that even with Interpolate Triangles enabled, particles will still be denser in areas of your mesh that are more dense with polygons.

Systematic

Enabling Systematic will cause your particles to be spawned in your mesh's vertex order. The vertex order is set by your 3D modeling application.


An MPE attached to a sphere with Systematic enabled

Normal Velocity

Normal Velocity controls the speed at which particles are emitted along the normal from where they are spawned.

For example, create a Mesh Particle System, use a cube mesh as the emitter, enable Interpolate Triangles, and set Normal Velocity Min and Max to 1. You will now see the particles emit from the faces of the cube in a straight line.

See Also

Hints

Particle Animator

Particle Animators move your particles over time, you use them to apply wind, drag & color cycling to your particle systems.


The Particle Animator Inspector

Properties

Does Animate ColorIf enabled, particles cycle their color over their lifetime.
Color AnimationThe 5 colors particles go through. All particles cycle over this - if some have a shorter life span than others, they will animate faster.
World Rotation AxisAn optional world-space axis the particles rotate around. Use this to make advanced spell effects or give caustic bubbles some life.
Local Rotation AxisAn optional local-space axis the particles rotate around. Use this to make advanced spell effects or give caustic bubbles some life.
Size GrowUse this to make particles grow in size over their lifetime. As randomized forces will spread your particles out, it is often nice to make them grow in size so they don't fall apart. Use this to make smoke rise upwards, to simulate wind, etc.
Rnd ForceA random force added to particles every frame. Use this to make smoke become more alive.
ForceThe force being applied every frame to the particles, measure relative to the world.
DampingHow much particles are slowed every frame. A value of 1 gives no damping, while less makes them slow down.
AutodestructIf enabled, the GameObject attached to the Particle Animator will be destroyed when all particles disappear.

Details

Particle Animators allow your particle systems to be dynamic. They allow you to change the color of your particles, apply forces and rotation, and choose to destroy them when they are finished emitting. For more information about Particle Systems, reference Mesh Particle Emitters, Ellipsoid Particle Emitters, and Particle Renderers.

Animating Color

If you would like your particles to change colors or fade in/out, enable them to Animate Color and specify the colors for the cycle. Any particle system that animates color will cycle through the 5 colors you choose. The speed at which they cycle will be determined by the Emitter's Energy value.

If you want your particles to fade in rather than instantly appear, set your first or last color to have a low Alpha value.


An Animating Color Particle System

Rotation Axes

Setting values in either the Local or World Rotation Axes will cause all spawned particles to rotate around the indicated axis (with the Transform's position as the center). The greater the value is entered on one of these axes, the faster the rotation will be.

Setting values in the Local Axes will cause the rotating particles to adjust their rotation as the Transform's rotation changes, to match its local axes.

Setting values in the World Axes will cause the particles' rotation to be consistent, regardless of the Transform's rotation.

Forces & Damping

You use force to make particles accelerate in the direction specified by the force.

Damping can be used to decelerate or accelerate without changing their direction:

Destroying GameObjects attached to Particles

You can destroy the Particle System and any attached GameObject by enabling the AutoDestruct property. For example, if you have an oil drum, you can attach a Particle System that has Emit disabled and AutoDestruct enabled. On collision, you enable the Particle Emitter. The explosion will occur and after it is over, the Particle System and the oil drum will be destroyed and removed from the scene.

Note that automatic destruction takes effect only after some particles have been emitted. The precise rules for when the object is destroyed when AutoDestruct is on:

Hints

Particle Collider

The World Particle Collider is used to collide particles against other Colliders in the scene.


A Particle System colliding with a Mesh Collider

Properties

Bounce FactorParticles can be accelerated or slowed down when they collide against other objects. This factor is similar to the Particle Animator's Damping property.
Collision Energy LossAmount of energy (in seconds) a particle should lose when colliding. If the energy goes below 0, the particle is killed.
Min Kill VelocityIf a particle's Velocity drops below Min Kill Velocity because of a collision, it will be eliminated.
Collides withWhich Layers the particle will collide against.
Send Collision MessageIf enabled, every particle sends out a collision message that you can catch through scripting.

Details

To create a Particle System with Particle Collider:

  1. Create a Particle System using GameObject->Create Other->Particle System
  2. Add the Particle Collider using Component->Particles->World Particle Collider

Messaging

If Send Collision Message is enabled, any particles that are in a collision will send the message OnParticleCollision() to both the particle's GameObject and the GameObject the particle collided with.

Hints

Particle Renderer

The Particle Renderer renders the Particle System on screen.


The Particle Renderer Inspector

Properties

MaterialsReference to a list of Materials that will be displayed in the position of each individual particle.
Camera Velocity ScaleThe amount of stretching that is applied to the Particles based on Camera movement.
Stretch ParticlesDetermines how the particles are rendered.
BillboardThe particles are rendered as if facing the camera.
StretchedThe particles are facing the direction they are moving.
SortedBillboardThe particles are sorted by depth. Use this when using a blending material.
VerticalBillboardAll particles are aligned flat along the X/Z axes.
HorizontalBillboardAll particles are aligned flat along the X/Y axes.
Length ScaleIf Stretch Particles is set to Stretched, this value determines how long the particles are in their direction of motion.
Velocity ScaleIf Stretch Particles is set to Stretched, this value determines the rate at which particles will be stretched, based on their movement speed.
UV AnimationIf either of these are set, the UV coordinates of the particles will be generated for use with a tile animated texture. See the section on Animated Textures below.
X TileNumber of frames located across the X axis.
Y TileNumber of frames located across the Y axis.
CyclesHow many times to loop the animation sequence.

Details

Particle Renderers are required for any Particle Systems to be displayed on the screen.


A Particle Renderer makes the Gunship's engine exhaust appear on the screen

Choosing a Material

When setting up a Particle Renderer it is very important to use an appropriate material and shader that renders both sides of the material. Most of the time you want to use a Material with one of the built-in Particle Shaders. There are some premade materials in the Standard Assets->Particles->Sources folder that you can use.

Creating a new material is easy:

  1. Select Assets->Create Other->Material from the menu bar.
  2. The Material has a shader popup, choose one of the shaders in the Particles group. Eg. Particles->Multiply.
  3. Now assign a Texture. The different shaders use the alpha channel of the textures slightly differently, but most of the time a value of black will make it invisible and white in the alpha channel will display it on screen.

Distorting particles

By default particles are rendered billboarded. That is simple square sprites. This is good for smoke and explosions and most other particle effects.

Particles can be made to either stretch with the velocity. This is useful for sparks, lightning or laser beams. Length Scale and Velocity Scale affects how long the stretched particle will be.

Sorted Billboard can be used to make all particles sort by depth. Sometimes this is necessary, mostly when using Alpha Blended particle shaders. This can be expensive and should only be used if it really makes a quality difference when rendering.

Animated textures

Particle Systems can be rendered with an animated tile texture. To use this feature, make the texture out of a grid of images. As the particles go through their life cycle, they will cycle through the images. This is good for adding more life to your particles, or making small rotating debris pieces.

Hints

Page last updated: 2007-11-16